package busco

import "wails/schema/enums/busenum"

// 场景：游戏中的商城、合成功能、制作功能
// 场景：新年功能获得福字后，在商店进行兑换
// 角色可在商店购买或者兑换商品
// @schema_export --ident=schema --json --config=商店
// @schema_go
// @cache_go
// @cache_ts
// @alias 商店
type B商店 struct {

	// 统计功能所在主体
	// @alias 所在主体
	S所在主体 string `link:"主体"`

	// 功能的扩展配置
	// 起源任务必须设置
	// 子任务不能设置
	// @alias 功能
	G功能 string `link:"功能"`

	// @alias 功能主体
	G功能主体 busenum.G功能主体

	// @alias 名称
	M名称 string

	// @alias 描述
	M描述 string

	// 通常用于查找或配置时，便于识别
	// @alias 标识
	M标识 string

	// @alias 标旗
	B标旗 map[S商店标旗]bool

	// @alias 创建执行
	C创建执行 string `link:"执行"`

	// @alias 创建奖励
	C创建奖励 string `link:"奖励"`

	// 场景：等级达到30级，商店才开放
	// @alias 开始条件
	S开始条件 map[string]string `link:"条件"`

	// @alias 结束条件
	J结束条件 map[string]string `link:"条件"`

	// 场景：12:00到13:00才会开始营业
	// @alias 营业条件
	Y营业条件 map[string]string `link:"条件"`
}

// @schema_export --ident=schema --json --config=商品
// @schema_go
// @cache_go
// @cache_ts
// @alias 商品
type B商品 struct {
	// 如果未设置名称，将采用奖励的名称
	// @alias 名称
	M名称 string
	// 如果未设置描述，将采用奖励的描述
	// @alias 描述
	M描述 string `link:"文本"`
	// 如果未设置图标，将采用奖励的图标
	// @alias 图标
	T图标 string
	// @alias 标旗
	B标旗 map[S商品标旗]bool
	// 符合条件时，在商店中显示
	// 场景：等级限制
	// 场景：不同职业显示不同的道具
	// @alias 开启条件
	X显示条件 map[string]string `link:"条件"`
	// 购买商品消费的资源
	// @alias 购买消费
	G购买消费 string `link:"消费"`
	// 符合条件时，在商店中允许购买
	// 场景：等级限制
	// 场景：不同职业显示不同的道具
	// @alias 购买条件
	G购买条件 map[string]string `link:"条件"`
	// @alias 购买奖励
	G购买奖励 string `link:"奖励"`
	// 购买时执行的操作
	// @alias 购买执行
	G购买执行 string `link:"执行"`
	// 每次购买限制的购买数量
	// 强化系统每次只能购买一次提升
	// @alias 购买数量限制
	G购买数量限制 *ValueRange
	// @alias 初始库存
	C初始库存 int
	// 每个角色可购买的数量
	// 场景：游戏服、公会等可多角色购买的商店，对角色进行限购，避免库存的商品被土豪买完
	// @alias 限购
	X限购 int
	// @alias 折扣
	Z折扣 float64
	// @alias 序号
	X序号 int
}

type X限购刷新方式 int

const (
	// 商店刷新的同时，刷新商品限购
	X限购刷新方式_商店刷新 X限购刷新方式 = iota
	// 根据商品定义的刷新时间
	X限购刷新方式_商品刷新
	// 少于最大值时，按照时间慢慢恢复
	X限购刷新方式_商品恢复
)

// @schema_export --ident=schema --json
// @schema_go
type S商店标旗 int

const (
	S商店标旗_允许重置 S商店标旗 = iota
	S商店标旗_允许刷新
	S商店标旗_允许购买对话框
	// 购买限购默认是客户端限制，服务器不做限制。勾选【强制购买限购】后，增加服务器限制
	S商店标旗_强制购买限购
	// 禁止后，可以降低一点数据存储和传输流量
	S商店标旗_禁止重复的商品
)

// @schema_export --ident=schema --json
// @schema_go
type S商品标旗 int

const (
	S商品标旗_暂无 S商品标旗 = iota
)
